﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

/// <summary>
/// Summary description for Conexion
/// </summary>
public class Conexion
{

    // Tambien funciona pero el otro es mas correcto en la programacion.

    private static string _stringConexion = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

    private static Type _tipoParametro = typeof(SqlParameter);


    public Conexion()
    {

    }

    /// <summary>
    /// Crea y abre una conexion a la base de datos utilizando el string de 
    /// conexion global para la aplicacion
    /// </summary>
    /// <returns>Una conexion a la bd</returns>
    public static SqlConnection CrearConexion()
    {
        SqlConnection con = new SqlConnection(_stringConexion);
        //Si tiene un Error aqui vaya en el web config -> appSetting y asegurese que es correcto el DataSource, direccion etc.
        //Fijaos que la base de datos no esta correctamente direccionada
        con.Open();
        return con;
    }

    /// <summary>
    /// Retorna y crea un comando apartir de la conexion
    /// </summary>
    /// <param name="con"></param>
    /// <returns></returns>
    public static IDbCommand CrearComando(IDbConnection con)
    {
        return con.CreateCommand();
    }

    /// <summary>
    /// Crea un parametro para el objeto comando que contiene
    /// las sentencias SQL preparadas 
    /// </summary>
    /// <param name="nombreParametro"></param>
    /// <param name="obj"></param>
    /// <returns></returns>
    public static IDbDataParameter CrearParametro(string nombreParametro, object obj)
    {
        IDbDataParameter prmtr = null;
        object[] args = { nombreParametro, obj };

        prmtr = (IDbDataParameter)Activator.CreateInstance(_tipoParametro, args);

        return prmtr;
    }



}
